﻿namespace reb0x
{
    public class Step
    {
        // the note value for a rest
        public const byte X0X_REST = 0x00;
        // the note value for an end of pattern
        public const byte X0X_EOP = 0xFF;
        // the note value of C2 (the lowest C on the x0x keyboard - without any Up/Done)
        public const byte X0X_C2 = 0x17;
        // an octave is 12 steps up/down
        public const byte OCTAVE = 0x0C;


        private bool _accent;
        private bool _slide;
        private byte _noteValue;

        public Step()
            : this(0, false, false)
        {
        }

        public Step(byte noteValue, bool slide, bool accent)
        {
            _noteValue = noteValue;
            _slide = slide;
            _accent = accent;
        }

        public bool HasAccent
        {
            get { return _accent; }
            set { _accent = value; }
        }

        public bool HasSlide
        {
            get { return _slide; }
            set { _slide = value; }
        }

        public byte NoteValue
        {
            get { return _noteValue; }
            set { _noteValue = value; }
        }
    }
}
